#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//#define PRINT(n) printf("the value of "#n" is %d\n",n)
//int main()
//{
//	int a = 10;
//	PRINT(a);
//	return 0;
//}


//int int_max(int x, int y)
//{
//	return x > y ? x : y;
//}
//
//float float_max(float x, float y)
//{
//	return x > y ? x : y;
//}

//#include<stdio.h>
//#define GENERIC(type)			\
//type type##_max(type x,type y)  \
//{								\
//	return x>y?x:y;				\
//}
//GENERIC(int);
//GENERIC(float);
//int main()
//{
//
//	float a = 10.9, b = 20.5;
//	printf("%f\n", float_max(a, b));
//	int m = 10, n = 20;
//	printf("%d\n", int_max(m, n));
//	return 0;
//}
//
//#include<stdio.h>
//int main() 
//{
//	int arr[10] = { 0 };
//	for (int i = 0; i < 10; i++) {
//		arr[i] = i;
//#ifdef __DEBUG__
//		printf("%d ", arr[i]);
//#endif
//	}
//	printf("\n");
//	return 0;
//}
//#include"test.h"
//#include"test.h"
//#include"test.h"
//#include"test.h"
//#include"test.h"
//int main()
//{
//
//	return 0;
//}

//#include<iostream>
//#include<cstdio>
//using namespace std;
//
//int main()
//{
//	int x, y, z, m;
//	cin >> x >> y >> z >> m;
//	if (x + z < 0 || y + m < 0 || m - y < 0 || (x + z) % 2 != 0 || (y + m) % 2 != 0 || (m - y) % 2 != 0) {
//		cout << "No" << endl;
//		return 0;
//	}
//	cout << (x + z) / 2 << " " << (y + m) / 2 << " " << (m - y) / 2 << endl;
//	return 0;
//}

#include<iostream>
using namespace std;
long long digit, n;
char arr_ch[20] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H' };
int arr[50];
int main()
{
	cin >> digit >> n;
	int i = 0; int flag = 0;
	if (digit < 0) {
		flag = -1;
		digit = -digit;
	}
	while (digit > 0) {
		arr[i++] = digit % n;
		digit /= n;
	}
	if (i == 0) {
		cout << 0;
		return 0;
	}
	if (flag == -1)cout << '-';
	for (i--; i >= 0; i--)
		cout << arr_ch[arr[i]];
	return 0;
}